Skip to content
All courses
EMB 525
Term 2
3 credits

Hardware/Software Co-Design with FPGAs

This course explores the principles and practices of hardware/software co-design on System-on-Chip (SoC) FPGAs. Students will learn to leverage high-level synthesis, HDL, and AXI interfaces to create custom accelerators, optimize system partitioning, and address critical design challenges like timing closure and verification. The curriculum focuses on practical application in embedded systems development.

Course outline

Lectures, virtual labs, and graded assignments — completed in your browser.

01Foundations of SoC FPGAs and Co-Design Paradigmslecture
02Refreshing HDL: Verilog/VHDL for FPGA Designlecture
03High-Level Synthesis: Bridging Software to Hardwarelecture
04Crafting Custom Accelerators with HLSlecture
05AXI Protocol: The Backbone of SoC Communicationlecture
06AXI Integration: Connecting IP Blocks and Processorslecture
07Software's Hardware View: Interfacing Processors and Peripheralslecture
08Efficient Memory Access and Dataflow in Co-Designlecture
09Strategic Partitioning: Deciding Hardware vs. Softwarelecture
10Maximizing Performance: Optimization in Co-Designed Systemslecture
11Achieving Timing Closure: Constraints and Analysislecture
12Comprehensive Verification of Co-Design Systemslecture
13Debugging Complex Hardware/Software Interactionslecture
14Co-Design Project Showcase and Emerging Trendsassignment

Syllabus

Week 1: Introduction to SoC FPGAs and Co-Design Principles
Week 2: Review of Digital Design and HDL (Verilog/VHDL)
Week 3: Introduction to High-Level Synthesis (HLS) for FPGAs
Week 4: Designing Custom Accelerators with HLS
Week 5: AXI Interface Fundamentals and Protocol
Week 6: Integrating Custom IP with AXI Interconnect
Week 7: Processor-in-the-Loop and Hardware/Software Interface
Week 8: Memory Systems and Data Transfer Optimization
Week 9: Hardware/Software Partitioning Strategies
Week 10: Performance Analysis and Optimization Techniques
Week 11: Timing Closure and Design Constraints
Week 12: Verification Methodologies for Co-Design
Week 13: Debugging Hardware/Software Systems on FPGAs
Week 14: Project Presentations and Advanced Topics